package gateway.rule.path;

import java.util.Map;

/**
 * @author Jin Zheng
 * @since 1.0 2020-09-23
 */
public class UrlUtil
{
	private UrlUtil()
	{
	}


	/**
	 * 根据模板生成字符串
	 *
	 * @param template 模板
	 * @param param    参数
	 * @return 生成的字符串
	 */
	public static String template(String template, Map<String, Object> param)
	{
		return template(template, param, "{", "}");
	}

	/**
	 * 根据模板生成字符串
	 *
	 * @param template 模板
	 * @param param    参数
	 * @param prefix   前缀
	 * @param suffix   后缀
	 * @return 生成的字符串
	 */
	public static String template(String template, Map<String, Object> param, String prefix, String suffix)
	{
		StringBuilder content = new StringBuilder(template);
		for (Map.Entry<String, Object> entry : param.entrySet())
		{
			if (entry.getValue() == null)
				continue;

			StringBuilder p = new StringBuilder(32);
			if (prefix != null && !prefix.isEmpty())
			{
				p.append(prefix);
			}
			p.append(entry.getKey());
			if (suffix != null && !suffix.isEmpty())
			{
				p.append(suffix);
			}
			int index = 0;
			while (index != -1)
			{
				index = content.indexOf(p.toString());
				if (index != -1)
				{
					content.replace(index, index + p.length(), entry.getValue().toString());
				}
			}
		}
		return content.toString();
	}

}
